package solutions.ferpa.ztest.ent;

import java.sql.*;
import java.util.ArrayList;
import br.com.telescope.adsrt.dom.*;
import br.com.telescope.adsrt.lib.*;
import br.com.telescope.t2.exception.Severity;
import br.com.telescope.auth.AdsrtUser;
import java.util.UUID;

/**
 * API de persistência de dados da entidade USUARIOS
 * @author Gerado pelo Telescope
 */
public class EntUsuarios extends Entity {
    
    public final static String ENTITY_NAME = "RTAUTH.USUARIOS";
    public final static String TABLE_NAME = "USUARIOS";
    // <user-code id="778889" parentId="778887" hashcode="-5b7be200" length="454">
    /**
     * Retornar o usuário
     * @return 
     * @throws AdsException 
     */
    public AdsrtUser getUser() throws AdsException {
        AdsrtUser user = new AdsrtUser();
        user.setPersonId( valueOfPessoaId() );
        user.setSuperUser(valueOfSuperUsuario().equals("S"));
        user.setLoginName(valueOfLogin());
        user.setEmail(valueOfEMail());
        user.setDisplayName(valueOfNomeCompleto());
        user.setId(String.valueOf(valueOfId()));
        return user;
    }
    // </user-code>
    
    // <editor-fold defaultstate="collapsed" desc="Contrutores e inicializacao">
    /**
     * Construtores
     */
    public EntUsuarios() {
        super();
        initialize();
    }
    
    public EntUsuarios(BaseRuntime ctx) {
        super();
        initialize(ctx);
    }
    
    @Override
    public String getPrimaryKeyColumn() {
        return "ID";
    }
    
    @Override
    public void initialize(BaseRuntime ctx) {
        super.initialize(ctx);
        initialize();
    }
    
    public void initialize() {
        aId = new DomId(this,"ID", "ID"); 
        aId.setRequired(true);
        oId = new DomId();
        aLogin = new DomLogin(this,"LOGIN", "Login"); 
        aLogin.setRequired(true);
        oLogin = new DomLogin();
        aSenha = new DomPassword(this,"SENHA", "Senha"); 
        aSenha.setSize(40);
        oSenha = new DomPassword();
        aSenhaHash = new DomPasswordHash(this,"SENHA_HASH", "Senha"); 
        aSenhaHash.setSize(40);
        oSenhaHash = new DomPasswordHash();
        aSuperUsuario = new DomFlag(this,"SUPER_USUARIO", "Super usuário"); 
        aSuperUsuario.setRequired(true);
        aSuperUsuario.setDefaultValue("N");
        oSuperUsuario = new DomFlag();
        aAtivo = new DomFlag(this,"ATIVO", "Ativo"); 
        aAtivo.setRequired(true);
        aAtivo.setDefaultValue("S");
        oAtivo = new DomFlag();
        aPessoaId = new DomId(this,"PESSOA_ID", "Pessoa"); 
        oPessoaId = new DomId();
        aNomeCompleto = new DomUpper(this,"NOME_COMPLETO", "Nome completo"); 
        aNomeCompleto.setSize(100);
        oNomeCompleto = new DomUpper();
        aEMail = new DomEMail(this,"E_MAIL", "E-mail"); 
        oEMail = new DomEMail();
        aMenuId = new DomId(this,"MENU_ID", "Menu inicial"); 
        oMenuId = new DomId();
        aValidade = new DomDate(this,"VALIDADE", "Validade"); 
        oValidade = new DomDate();
        ressetModified();
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="Atributos da entidade">
    
    // ID
    private DomId aId;
    private DomId oId;
    
    // Login
    private DomLogin aLogin;
    private DomLogin oLogin;
    
    // Senha
    private DomPassword aSenha;
    private DomPassword oSenha;
    
    // Senha
    private DomPasswordHash aSenhaHash;
    private DomPasswordHash oSenhaHash;
    
    // Super usuário
    private DomFlag aSuperUsuario;
    private DomFlag oSuperUsuario;
    
    // Ativo
    private DomFlag aAtivo;
    private DomFlag oAtivo;
    
    // Pessoa
    private DomId aPessoaId;
    private DomId oPessoaId;
    
    // Nome completo
    private DomUpper aNomeCompleto;
    private DomUpper oNomeCompleto;
    
    // E-mail
    private DomEMail aEMail;
    private DomEMail oEMail;
    
    // Menu inicial
    private DomId aMenuId;
    private DomId oMenuId;
    
    // Validade
    private DomDate aValidade;
    private DomDate oValidade;
    
    // <editor-fold defaultstate="collapsed" desc="Atributo ID">
    
    public EntUsuarios id(Long value) {
        setId(value);
        return this;
    }
    
    public void setId(DomId value) {
        if (value == null || value.isNull()) {
            nullifyId();
        } else {
            aId.setValue(value.getValue());
            if (aId.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setId(String value) {
        if (value == null) {
            nullifyId();
        } else {
            aId.setValue(value);
            if (aId.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setId(Long value) {
        aId.setValue(value);
        if (aId.isModified()) {
            setModified(true);
        }
    }
    
    public void setId(Object value) {
        aId.setValue(value);
        if (aId.isModified()) {
            setModified(true);
        }
    }
    
    public void nullifyId() {
        if (!aId.isNull()) {
            aId.setNull(true);
            setModified(true);
        }
    }
    
    public DomId getId() {
        return aId;
    }
    
    public DomId oldId() {
        return oId;
    }
    
    public Long valueOfId() {
        return aId.getValue();
    }
    
    public boolean isIdModified() {
        return aId.isModified();
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="Atributo LOGIN">
    
    public EntUsuarios login(String value) {
        setLogin(value);
        return this;
    }
    
    public void setLogin(DomLogin value) {
        if (value == null || value.isNull()) {
            nullifyLogin();
        } else {
            aLogin.setValue(value.getValue());
            if (aLogin.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setLogin(String value) {
        if (value == null) {
            nullifyLogin();
        } else {
            aLogin.setValue(value);
            if (aLogin.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setLogin(Object value) {
        aLogin.setValue(value);
        if (aLogin.isModified()) {
            setModified(true);
        }
    }
    
    public void nullifyLogin() {
        if (!aLogin.isNull()) {
            aLogin.setNull(true);
            setModified(true);
        }
    }
    
    public DomLogin getLogin() {
        return aLogin;
    }
    
    public DomLogin oldLogin() {
        return oLogin;
    }
    
    public String valueOfLogin() {
        return aLogin.getValue();
    }
    
    public boolean isLoginModified() {
        return aLogin.isModified();
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="Atributo SENHA">
    
    public EntUsuarios senha(String value) {
        setSenha(value);
        return this;
    }
    
    public void setSenha(DomPassword value) {
        if (value == null || value.isNull()) {
            nullifySenha();
        } else {
            aSenha.setValue(value.getValue());
            if (aSenha.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setSenha(String value) {
        if (value == null) {
            nullifySenha();
        } else {
            aSenha.setValue(value);
            if (aSenha.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setSenha(Object value) {
        aSenha.setValue(value);
        if (aSenha.isModified()) {
            setModified(true);
        }
    }
    
    public void nullifySenha() {
        if (!aSenha.isNull()) {
            aSenha.setNull(true);
            setModified(true);
        }
    }
    
    public DomPassword getSenha() {
        return aSenha;
    }
    
    public DomPassword oldSenha() {
        return oSenha;
    }
    
    public String valueOfSenha() {
        return aSenha.getValue();
    }
    
    public boolean isSenhaModified() {
        return aSenha.isModified();
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="Atributo SENHA_HASH">
    
    public EntUsuarios senhaHash(String value) {
        setSenhaHash(value);
        return this;
    }
    
    public void setSenhaHash(DomPasswordHash value) {
        if (value == null || value.isNull()) {
            nullifySenhaHash();
        } else {
            aSenhaHash.setValue(value.getValue());
            if (aSenhaHash.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setSenhaHash(String value) {
        if (value == null) {
            nullifySenhaHash();
        } else {
            aSenhaHash.setValue(value);
            if (aSenhaHash.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setSenhaHash(Object value) {
        aSenhaHash.setValue(value);
        if (aSenhaHash.isModified()) {
            setModified(true);
        }
    }
    
    public void nullifySenhaHash() {
        if (!aSenhaHash.isNull()) {
            aSenhaHash.setNull(true);
            setModified(true);
        }
    }
    
    public DomPasswordHash getSenhaHash() {
        return aSenhaHash;
    }
    
    public DomPasswordHash oldSenhaHash() {
        return oSenhaHash;
    }
    
    public String valueOfSenhaHash() {
        return aSenhaHash.getValue();
    }
    
    public boolean isSenhaHashModified() {
        return aSenhaHash.isModified();
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="Atributo SUPER_USUARIO">
    
    public EntUsuarios superUsuario(String value) {
        setSuperUsuario(value);
        return this;
    }
    
    public void setSuperUsuario(DomFlag value) {
        if (value == null || value.isNull()) {
            nullifySuperUsuario();
        } else {
            aSuperUsuario.setValue(value.getValue());
            if (aSuperUsuario.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setSuperUsuario(String value) {
        if (value == null) {
            nullifySuperUsuario();
        } else {
            aSuperUsuario.setValue(value);
            if (aSuperUsuario.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setSuperUsuario(Object value) {
        aSuperUsuario.setValue(value);
        if (aSuperUsuario.isModified()) {
            setModified(true);
        }
    }
    
    public void nullifySuperUsuario() {
        if (!aSuperUsuario.isNull()) {
            aSuperUsuario.setNull(true);
            setModified(true);
        }
    }
    
    public DomFlag getSuperUsuario() {
        return aSuperUsuario;
    }
    
    public DomFlag oldSuperUsuario() {
        return oSuperUsuario;
    }
    
    public String valueOfSuperUsuario() {
        return aSuperUsuario.getValue();
    }
    
    public boolean isSuperUsuarioModified() {
        return aSuperUsuario.isModified();
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="Atributo ATIVO">
    
    public EntUsuarios ativo(String value) {
        setAtivo(value);
        return this;
    }
    
    public void setAtivo(DomFlag value) {
        if (value == null || value.isNull()) {
            nullifyAtivo();
        } else {
            aAtivo.setValue(value.getValue());
            if (aAtivo.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setAtivo(String value) {
        if (value == null) {
            nullifyAtivo();
        } else {
            aAtivo.setValue(value);
            if (aAtivo.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setAtivo(Object value) {
        aAtivo.setValue(value);
        if (aAtivo.isModified()) {
            setModified(true);
        }
    }
    
    public void nullifyAtivo() {
        if (!aAtivo.isNull()) {
            aAtivo.setNull(true);
            setModified(true);
        }
    }
    
    public DomFlag getAtivo() {
        return aAtivo;
    }
    
    public DomFlag oldAtivo() {
        return oAtivo;
    }
    
    public String valueOfAtivo() {
        return aAtivo.getValue();
    }
    
    public boolean isAtivoModified() {
        return aAtivo.isModified();
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="Atributo PESSOA_ID">
    
    public EntUsuarios pessoaId(Long value) {
        setPessoaId(value);
        return this;
    }
    
    public void setPessoaId(DomId value) {
        if (value == null || value.isNull()) {
            nullifyPessoaId();
        } else {
            aPessoaId.setValue(value.getValue());
            if (aPessoaId.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setPessoaId(String value) {
        if (value == null) {
            nullifyPessoaId();
        } else {
            aPessoaId.setValue(value);
            if (aPessoaId.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setPessoaId(Long value) {
        aPessoaId.setValue(value);
        if (aPessoaId.isModified()) {
            setModified(true);
        }
    }
    
    public void setPessoaId(Object value) {
        aPessoaId.setValue(value);
        if (aPessoaId.isModified()) {
            setModified(true);
        }
    }
    
    public void nullifyPessoaId() {
        if (!aPessoaId.isNull()) {
            aPessoaId.setNull(true);
            setModified(true);
        }
    }
    
    public DomId getPessoaId() {
        return aPessoaId;
    }
    
    public DomId oldPessoaId() {
        return oPessoaId;
    }
    
    public Long valueOfPessoaId() {
        return aPessoaId.getValue();
    }
    
    public boolean isPessoaIdModified() {
        return aPessoaId.isModified();
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="Atributo NOME_COMPLETO">
    
    public EntUsuarios nomeCompleto(String value) {
        setNomeCompleto(value);
        return this;
    }
    
    public void setNomeCompleto(DomUpper value) {
        if (value == null || value.isNull()) {
            nullifyNomeCompleto();
        } else {
            aNomeCompleto.setValue(value.getValue());
            if (aNomeCompleto.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setNomeCompleto(String value) {
        if (value == null) {
            nullifyNomeCompleto();
        } else {
            aNomeCompleto.setValue(value);
            if (aNomeCompleto.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setNomeCompleto(Object value) {
        aNomeCompleto.setValue(value);
        if (aNomeCompleto.isModified()) {
            setModified(true);
        }
    }
    
    public void nullifyNomeCompleto() {
        if (!aNomeCompleto.isNull()) {
            aNomeCompleto.setNull(true);
            setModified(true);
        }
    }
    
    public DomUpper getNomeCompleto() {
        return aNomeCompleto;
    }
    
    public DomUpper oldNomeCompleto() {
        return oNomeCompleto;
    }
    
    public String valueOfNomeCompleto() {
        return aNomeCompleto.getValue();
    }
    
    public boolean isNomeCompletoModified() {
        return aNomeCompleto.isModified();
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="Atributo E_MAIL">
    
    public EntUsuarios eMail(String value) {
        setEMail(value);
        return this;
    }
    
    public void setEMail(DomEMail value) {
        if (value == null || value.isNull()) {
            nullifyEMail();
        } else {
            aEMail.setValue(value.getValue());
            if (aEMail.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setEMail(String value) {
        if (value == null) {
            nullifyEMail();
        } else {
            aEMail.setValue(value);
            if (aEMail.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setEMail(Object value) {
        aEMail.setValue(value);
        if (aEMail.isModified()) {
            setModified(true);
        }
    }
    
    public void nullifyEMail() {
        if (!aEMail.isNull()) {
            aEMail.setNull(true);
            setModified(true);
        }
    }
    
    public DomEMail getEMail() {
        return aEMail;
    }
    
    public DomEMail oldEMail() {
        return oEMail;
    }
    
    public String valueOfEMail() {
        return aEMail.getValue();
    }
    
    public boolean isEMailModified() {
        return aEMail.isModified();
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="Atributo MENU_ID">
    
    public EntUsuarios menuId(Long value) {
        setMenuId(value);
        return this;
    }
    
    public void setMenuId(DomId value) {
        if (value == null || value.isNull()) {
            nullifyMenuId();
        } else {
            aMenuId.setValue(value.getValue());
            if (aMenuId.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setMenuId(String value) {
        if (value == null) {
            nullifyMenuId();
        } else {
            aMenuId.setValue(value);
            if (aMenuId.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setMenuId(Long value) {
        aMenuId.setValue(value);
        if (aMenuId.isModified()) {
            setModified(true);
        }
    }
    
    public void setMenuId(Object value) {
        aMenuId.setValue(value);
        if (aMenuId.isModified()) {
            setModified(true);
        }
    }
    
    public void nullifyMenuId() {
        if (!aMenuId.isNull()) {
            aMenuId.setNull(true);
            setModified(true);
        }
    }
    
    public DomId getMenuId() {
        return aMenuId;
    }
    
    public DomId oldMenuId() {
        return oMenuId;
    }
    
    public Long valueOfMenuId() {
        return aMenuId.getValue();
    }
    
    public boolean isMenuIdModified() {
        return aMenuId.isModified();
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="Atributo VALIDADE">
    
    public EntUsuarios validade(java.sql.Date value) {
        setValidade(value);
        return this;
    }
    
    public void setValidade(DomDate value) {
        if (value == null || value.isNull()) {
            nullifyValidade();
        } else {
            aValidade.setValue(value.getValue());
            if (aValidade.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setValidade(String value) {
        if (value == null) {
            nullifyValidade();
        } else {
            aValidade.setValue(value);
            if (aValidade.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setValidade(java.sql.Date value) {
        aValidade.setValue(value);
        if (aValidade.isModified()) {
            setModified(true);
        }
    }
    
    public void setValidade(Object value) {
        aValidade.setValue(value);
        if (aValidade.isModified()) {
            setModified(true);
        }
    }
    
    public void nullifyValidade() {
        if (!aValidade.isNull()) {
            aValidade.setNull(true);
            setModified(true);
        }
    }
    
    public DomDate getValidade() {
        return aValidade;
    }
    
    public DomDate oldValidade() {
        return oValidade;
    }
    
    public java.sql.Date valueOfValidade() {
        return aValidade.getValue();
    }
    
    public boolean isValidadeModified() {
        return aValidade.isModified();
    }
    // </editor-fold>
    // </editor-fold>
    
    @Override
    protected void processDeleteRestrict() throws AdsException {
        // Nullify cascade ZTEST.PESSOA.FK_PESS_USUARIO_ASSOCIADO
        {
            EntPessoa external = new EntPessoa(ctx);
            external.findByUsuarioAssociado(valueOfId());
            if (external.next()) {
                throw new AdsException("ZTEST.PESSOA.FK_PESS_USUARIO_ASSOCIADO.RESTRICTED",
                        AdsException.ERROR,
                        "Não pode excluir porque existem Pessoas fazendo referencia para este registro");
            }
            external.close();
        }
        // Nullify cascade ZTEST.VALOR_VARIAVEL_ENSAIO.FK_VAVAEN_RESPONSAVEL_AJUSTE
        {
            EntValorVariavelEnsaio external = new EntValorVariavelEnsaio(ctx);
            external.findByResponsavelAjuste(valueOfId());
            if (external.next()) {
                throw new AdsException("ZTEST.VALOR_VARIAVEL_ENSAIO.FK_VAVAEN_RESPONSAVEL_AJUSTE.RESTRICTED",
                        AdsException.ERROR,
                        "Não pode excluir porque existem Valores das variávéis nos ensaios fazendo referencia para este registro");
            }
            external.close();
        }
    }
    
    @Override
    protected void processDeleteCascade() throws AdsException {
        // Delete cascade RTAUTH.CHAVES_ATIVACAO.FK_CHAATV_USUARI_USUARIO
        {
            EntChavesAtivacao chavesAtivacao = new EntChavesAtivacao(ctx);
            chavesAtivacao.del("select id from CHAVES_ATIVACAO where USUARIO_ID = " + valueOfId());
        }
        // Delete cascade RTAUTH.BILHETES_ENTRADA.FK_BIEN_USUA_USUARIO
        {
            EntBilhetesEntrada bilhetesEntrada = new EntBilhetesEntrada(ctx);
            bilhetesEntrada.del("select id from BILHETES_ENTRADA where USUARIO_ID = " + valueOfId());
        }
        // Delete cascade RTAUTH.FUNCOES_USUARIOS.FK_FUNUSU_USUARIO
        {
            EntFuncoesUsuarios funcoesUsuarios = new EntFuncoesUsuarios(ctx);
            funcoesUsuarios.del("select id from FUNCOES_USUARIOS where USUARIO_ID = " + valueOfId());
        }
        // Delete cascade RTPREF.PREFERENCIAS_USUARIOS.FK_PRUS_USUA_USUARIO
        {
            EntPreferenciasUsuarios preferenciasUsuarios = new EntPreferenciasUsuarios(ctx);
            preferenciasUsuarios.del("select id from PREFERENCIAS_USUARIOS where USUARIO_ID = " + valueOfId());
        }
    }
    
    // <editor-fold defaultstate="collapsed" desc="getErrors">
    /**
     * Traduz um erro recebido do banco de dados para um AdsException
     */
    @Override
    public AdsException getErrors(String errorMsg, int transaction) {
        AdsException e;
        String msg = errorMsg.toUpperCase();
        
        if (transaction == DELETE_TRANSACTION) {
            if (msg.indexOf("FK_PEDI_USUARI_RESPONSAVEL_CANCELAMENTO") >= 0) {
                e = new AdsException("PEDIDOS.PEDIDOS.FK_PEDI_USUARI_RESPONSAVEL_CANCELAMENTO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Pedidos fazendo referencia para este registro! (FK_PEDI_USUARI_RESPONSAVEL_CANCELAMENTO)");
                return e;
            } else if (msg.indexOf("FK_HISCOM_USUA_USUARIO") >= 0) {
                e = new AdsException("ADS.HISTORICOS_COMPONENTES.FK_HISCOM_USUA_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Históricos dos componentes fazendo referencia para este registro! (FK_HISCOM_USUA_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_ALBACR_USUARI_USUARIO_PROPRIETARIO") >= 0) {
                e = new AdsException("ACERVO_AREZZO.ALBUNS_ACERVO.FK_ALBACR_USUARI_USUARIO_PROPRIETARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Albuns do acervo fazendo referencia para este registro! (FK_ALBACR_USUARI_USUARIO_PROPRIETARIO)");
                return e;
            } else if (msg.indexOf("FK_PEACAL_USUARI") >= 0) {
                e = new AdsException("ACERVO_AREZZO.PERMISSOES_ACESSO_ALBUNS.FK_PEACAL_USUARI.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Permissões de acesso aos albuns fazendo referencia para este registro! (FK_PEACAL_USUARI)");
                return e;
            } else if (msg.indexOf("FK_ARAN_USUARI_USUARIO") >= 0) {
                e = new AdsException("ARQANE.ARQUIVOS_ANEXOS.FK_ARAN_USUARI_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Arquivos Anexos fazendo referencia para este registro! (FK_ARAN_USUARI_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_CLIENT_USUA_AUTORIZADOR_LIMITE_MENSAL_APROVADO") >= 0) {
                e = new AdsException("CLIENT.CLIENTES.FK_CLIENT_USUA_AUTORIZADOR_LIMITE_MENSAL_APROVADO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Clientes fazendo referencia para este registro! (FK_CLIENT_USUA_AUTORIZADOR_LIMITE_MENSAL_APROVADO)");
                return e;
            } else if (msg.indexOf("FK_ITCOPRCO_USUARI_USUARIO") >= 0) {
                e = new AdsException("COTCOM.ITENS_COTACOES_PRODUTOS_COMPRA.FK_ITCOPRCO_USUARI_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Itens de cotações de produtos para compra fazendo referencia para este registro! (FK_ITCOPRCO_USUARI_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_ITCOPRCO_USUARI_USUARIO_QUE_APROVOU") >= 0) {
                e = new AdsException("COTCOM.ITENS_COTACOES_PRODUTOS_COMPRA.FK_ITCOPRCO_USUARI_USUARIO_QUE_APROVOU.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Itens de cotações de produtos para compra fazendo referencia para este registro! (FK_ITCOPRCO_USUARI_USUARIO_QUE_APROVOU)");
                return e;
            } else if (msg.indexOf("FK_ITESOL_LIBERADOR") >= 0) {
                e = new AdsException("COTORC.ITENS_SOLICITADOS.FK_ITESOL_LIBERADOR.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Ítens solicitados fazendo referencia para este registro! (FK_ITESOL_LIBERADOR)");
                return e;
            } else if (msg.indexOf("FK_LOG_PECATA_N_USUARIO") >= 0) {
                e = new AdsException("AUTOBASIWEB.LOG_PEDIDO_CT.FK_LOG_PECATA_N_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Logs dos pedidos CT's fazendo referencia para este registro! (FK_LOG_PECATA_N_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_ITESOL_APROVADOR") >= 0) {
                e = new AdsException("COTORC.ITENS_SOLICITADOS.FK_ITESOL_APROVADOR.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Ítens solicitados fazendo referencia para este registro! (FK_ITESOL_APROVADOR)");
                return e;
            } else if (msg.indexOf("FK_LANCAM_USUARIO") >= 0) {
                e = new AdsException("COTORC.LANCAMENTOS.FK_LANCAM_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Lançamentos fazendo referencia para este registro! (FK_LANCAM_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_PERACE_USUARIO") >= 0) {
                e = new AdsException("COTORC.PERMISSOES_ACESSO.FK_PERACE_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Permissões de acesso fazendo referencia para este registro! (FK_PERACE_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_RETBAN_USUARI_USUARIO_CANCELAMENTO") >= 0) {
                e = new AdsException("CNAB.RETORNOS_BANCARIOS.FK_RETBAN_USUARI_USUARIO_CANCELAMENTO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Retornos bancários fazendo referencia para este registro! (FK_RETBAN_USUARI_USUARIO_CANCELAMENTO)");
                return e;
            } else if (msg.indexOf("FK_PESSOA_USUARI_RESPONSAVEL") >= 0) {
                e = new AdsException("CRM_YAZIGI.PESSOAS.FK_PESSOA_USUARI_RESPONSAVEL.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Pessoas fazendo referencia para este registro! (FK_PESSOA_USUARI_RESPONSAVEL)");
                return e;
            } else if (msg.indexOf("FK_HICOSE_USUARI_USUARIO") >= 0) {
                e = new AdsException("CONTRATO.HISTORICOS_CONTRATOS_SERVICOS.FK_HICOSE_USUARI_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Históricos de contratos de serviços fazendo referencia para este registro! (FK_HICOSE_USUARI_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_CONT_USUARI_USUARIO_INSERCAO") >= 0) {
                e = new AdsException("CRM_2.CONTATOS.FK_CONT_USUARI_USUARIO_INSERCAO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Contatos (CRM) fazendo referencia para este registro! (FK_CONT_USUARI_USUARIO_INSERCAO)");
                return e;
            } else if (msg.indexOf("FK_CONT_USUARI_USUARIO_QUE_ALTEROU") >= 0) {
                e = new AdsException("CRM_2.CONTATOS.FK_CONT_USUARI_USUARIO_QUE_ALTEROU.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Contatos (CRM) fazendo referencia para este registro! (FK_CONT_USUARI_USUARIO_QUE_ALTEROU)");
                return e;
            } else if (msg.indexOf("FK_HISCONT_USUARI_USUARIO") >= 0) {
                e = new AdsException("CONTRATO.HISTORICOS_MOD_CONT_SERVICOS.FK_HISCONT_USUARI_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Históricos de modificações de contratos fazendo referencia para este registro! (FK_HISCONT_USUARI_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_LOG_PECATA_O_USUARIO") >= 0) {
                e = new AdsException("AUTOBASIWEB.LOG_PEDIDO_CT.FK_LOG_PECATA_O_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Logs dos pedidos CT's fazendo referencia para este registro! (FK_LOG_PECATA_O_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_DOCTES_USUARI_USUARIO_INUTILIZACAO") >= 0) {
                e = new AdsException("DOENSA.DOC_ENTRADAS_SAIDAS.FK_DOCTES_USUARI_USUARIO_INUTILIZACAO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Documentos de entradas e saídas fazendo referencia para este registro! (FK_DOCTES_USUARI_USUARIO_INUTILIZACAO)");
                return e;
            } else if (msg.indexOf("FK_HISPED_USUA_USUARIO") >= 0) {
                e = new AdsException("PEDIDOS.HISTORICOS_PEDIDOS.FK_HISPED_USUA_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Históricos de pedidos fazendo referencia para este registro! (FK_HISPED_USUA_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_PEDI_PESS_EMITENTE") >= 0) {
                e = new AdsException("PEDIDOS.PEDIDOS.FK_PEDI_PESS_EMITENTE.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Pedidos fazendo referencia para este registro! (FK_PEDI_PESS_EMITENTE)");
                return e;
            } else if (msg.indexOf("FK_LOENSERASA_USUARI_USUARIO_RESPONSAVEL") >= 0) {
                e = new AdsException("SERASA.LOTES_ENVIO_SERASA.FK_LOENSERASA_USUARI_USUARIO_RESPONSAVEL.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Lotes de envio para SERASA fazendo referencia para este registro! (FK_LOENSERASA_USUARI_USUARIO_RESPONSAVEL)");
                return e;
            } else if (msg.indexOf("FK_SOCOPR_USUARIO_SOLICITACAO") >= 0) {
                e = new AdsException("FRIGAPP.SOLICITACOES_COTACOES_PRODUTOS.FK_SOCOPR_USUARIO_SOLICITACAO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Solicitações de cotações de produtos fazendo referencia para este registro! (FK_SOCOPR_USUARIO_SOLICITACAO)");
                return e;
            } else if (msg.indexOf("FK_AJVACO_USUARI_USUARIO_SOLICITA_AJUSTE") >= 0) {
                e = new AdsException("FRIGELAR_DEPRECATED.AJUSTES_VALORES_COMISSOES.FK_AJVACO_USUARI_USUARIO_SOLICITA_AJUSTE.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Ajustes de valores das comissões fazendo referencia para este registro! (FK_AJVACO_USUARI_USUARIO_SOLICITA_AJUSTE)");
                return e;
            } else if (msg.indexOf("FK_AJVACO_USUARI_USUARIO_CONFIRMACAO") >= 0) {
                e = new AdsException("FRIGELAR_DEPRECATED.AJUSTES_VALORES_COMISSOES.FK_AJVACO_USUARI_USUARIO_CONFIRMACAO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Ajustes de valores das comissões fazendo referencia para este registro! (FK_AJVACO_USUARI_USUARIO_CONFIRMACAO)");
                return e;
            } else if (msg.indexOf("FK_PROC_USUARI_USUARIO_ULTIMA_ALTERACAO") >= 0) {
                e = new AdsException("JURID.PROCESSOS.FK_PROC_USUARI_USUARIO_ULTIMA_ALTERACAO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Processos fazendo referencia para este registro! (FK_PROC_USUARI_USUARIO_ULTIMA_ALTERACAO)");
                return e;
            } else if (msg.indexOf("FK_APRFIN_USUARI_USUARIO") >= 0) {
                e = new AdsException("ERP.APROVACOES_FINANCEIRO.FK_APRFIN_USUARI_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Aprovações financeiro fazendo referencia para este registro! (FK_APRFIN_USUARI_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_HISPED_USUA_USUARIO") >= 0) {
                e = new AdsException("PEDI.HISTORICOS_PEDIDOS.FK_HISPED_USUA_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Históricos dos pedidos fazendo referencia para este registro! (FK_HISPED_USUA_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_PEDI_PESS_EMITENTE") >= 0) {
                e = new AdsException("PEDI.PEDIDOS.FK_PEDI_PESS_EMITENTE.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Pedidos de venda fazendo referencia para este registro! (FK_PEDI_PESS_EMITENTE)");
                return e;
            } else if (msg.indexOf("FK_APRFIN_USUARI_USUARIO_APROVACAO") >= 0) {
                e = new AdsException("ERP.APROVACOES_FINANCEIRO.FK_APRFIN_USUARI_USUARIO_APROVACAO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Aprovações financeiro fazendo referencia para este registro! (FK_APRFIN_USUARI_USUARIO_APROVACAO)");
                return e;
            } else if (msg.indexOf("FK_ITPE_USUARI_USUARIO_AUTORIZOU_PRECO") >= 0) {
                e = new AdsException("PEDIDOS.ITENS_PEDIDOS.FK_ITPE_USUARI_USUARIO_AUTORIZOU_PRECO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Ítens de pedidos fazendo referencia para este registro! (FK_ITPE_USUARI_USUARIO_AUTORIZOU_PRECO)");
                return e;
            } else if (msg.indexOf("FK_ORCCLI_USUARI_ORCAMENTISTA") >= 0) {
                e = new AdsException("FRIGCAM.ORCAMENTOS_CLIENTES.FK_ORCCLI_USUARI_ORCAMENTISTA.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Orçamentos para clientes fazendo referencia para este registro! (FK_ORCCLI_USUARI_ORCAMENTISTA)");
                return e;
            } else if (msg.indexOf("FK_TITO_USUARI_USUARIO_APROVACAO_ANALISE") >= 0) {
                e = new AdsException("FINANC.TITULOS.FK_TITO_USUARI_USUARIO_APROVACAO_ANALISE.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Títulos financeiros fazendo referencia para este registro! (FK_TITO_USUARI_USUARIO_APROVACAO_ANALISE)");
                return e;
            } else if (msg.indexOf("FK_RELARQ_USUARI_USUARIO") >= 0) {
                e = new AdsException("RELARQ.RELATORIOS_ARQUIVADOS.FK_RELARQ_USUARI_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Relatórios arquivados fazendo referencia para este registro! (FK_RELARQ_USUARI_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_FECEST_USUARI_USUARIO_QUE_CONFIRMOU") >= 0) {
                e = new AdsException("EMPEST.FECHAMENTOS_ESTABELECIMENTOS.FK_FECEST_USUARI_USUARIO_QUE_CONFIRMOU.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Fechamentos de estabelecimentos fazendo referencia para este registro! (FK_FECEST_USUARI_USUARIO_QUE_CONFIRMOU)");
                return e;
            } else if (msg.indexOf("FK_FECEST_USUARI_USUARIO_CAIXA") >= 0) {
                e = new AdsException("EMPEST.FECHAMENTOS_ESTABELECIMENTOS.FK_FECEST_USUARI_USUARIO_CAIXA.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Fechamentos de estabelecimentos fazendo referencia para este registro! (FK_FECEST_USUARI_USUARIO_CAIXA)");
                return e;
            } else if (msg.indexOf("FK_RELEMIT_USUARI_USUARIO") >= 0) {
                e = new AdsException("RELEMIT.RELATORIOS_EMITIDOS.FK_RELEMIT_USUARI_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Relatorios emitidos fazendo referencia para este registro! (FK_RELEMIT_USUARI_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_ORCCAM_USUARI_USUARIO") >= 0) {
                e = new AdsException("FRIGCAM.ORCAMENTOS_CLIENTES.FK_ORCCAM_USUARI_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Orçamentos para clientes fazendo referencia para este registro! (FK_ORCCAM_USUARI_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_ORCCAM_USUARI_USUARIO") >= 0) {
                e = new AdsException("FRIGCAM.CAMARAS.FK_ORCCAM_USUARI_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Câmaras fazendo referencia para este registro! (FK_ORCCAM_USUARI_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_MOVFIN_USUARI_USUARIO_ESTORNO") >= 0) {
                e = new AdsException("MOVFIN.MOVIMENTOS_FINANCEIROS.FK_MOVFIN_USUARI_USUARIO_ESTORNO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Movimentos financeiros fazendo referencia para este registro! (FK_MOVFIN_USUARI_USUARIO_ESTORNO)");
                return e;
            } else if (msg.indexOf("FK_NEGTIT_USUARI_USUARIO_RESPONSAVEL") >= 0) {
                e = new AdsException("FINANC.NEGOCIACOES_TITULOS.FK_NEGTIT_USUARI_USUARIO_RESPONSAVEL.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Negociações títulos fazendo referencia para este registro! (FK_NEGTIT_USUARI_USUARIO_RESPONSAVEL)");
                return e;
            } else if (msg.indexOf("FK_MOVFIN_USUARI_USUARIO") >= 0) {
                e = new AdsException("MOVFIN.MOVIMENTOS_FINANCEIROS.FK_MOVFIN_USUARI_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Movimentos financeiros fazendo referencia para este registro! (FK_MOVFIN_USUARI_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_PECATA_USUARIO") >= 0) {
                e = new AdsException("AUTOBASE.PEDIDO_CARREGAMENTO.FK_PECATA_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Pedidos para carregamentos fazendo referencia para este registro! (FK_PECATA_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_REGSUG_USUARIO_REGISTRO") >= 0) {
                e = new AdsException("AUTOBASE.REGISTRO_SUGESTOES.FK_REGSUG_USUARIO_REGISTRO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Registros de sugestões fazendo referencia para este registro! (FK_REGSUG_USUARIO_REGISTRO)");
                return e;
            } else if (msg.indexOf("FK_ITREME_USUARI_RESPONSAVEL_RECEBIMENTO") >= 0) {
                e = new AdsException("IDLOUP.ITENS_REMESSAS.FK_ITREME_USUARI_RESPONSAVEL_RECEBIMENTO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Itens de remessas fazendo referencia para este registro! (FK_ITREME_USUARI_RESPONSAVEL_RECEBIMENTO)");
                return e;
            } else if (msg.indexOf("FK_ITREME_USUA_RESPONSAVEL") >= 0) {
                e = new AdsException("IDLOUP.ITENS_REMESSAS.FK_ITREME_USUA_RESPONSAVEL.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Itens de remessas fazendo referencia para este registro! (FK_ITREME_USUA_RESPONSAVEL)");
                return e;
            } else if (msg.indexOf("FK_222535") >= 0) {
                e = new AdsException("IDLOUP.REMESSAS.FK_222535.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Remessas fazendo referencia para este registro! (FK_222535)");
                return e;
            } else if (msg.indexOf("FK_222533") >= 0) {
                e = new AdsException("IDLOUP.REMESSAS.FK_222533.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Remessas fazendo referencia para este registro! (FK_222533)");
                return e;
            } else if (msg.indexOf("FK_222522") >= 0) {
                e = new AdsException("IDLOUP.REMESSAS.FK_222522.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Remessas fazendo referencia para este registro! (FK_222522)");
                return e;
            } else if (msg.indexOf("FK_UNIPRO_207695") >= 0) {
                e = new AdsException("IDLOUP.UNIDADES_PRODUTOS.FK_UNIPRO_207695.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Unidades de produtos fazendo referencia para este registro! (FK_UNIPRO_207695)");
                return e;
            } else if (msg.indexOf("FK_HIBLUN_USUARI_RESPONSAVEL") >= 0) {
                e = new AdsException("IDLOUP.HISTORICOS_BLOQUEIOS_UNIDADES.FK_HIBLUN_USUARI_RESPONSAVEL.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Históricos de bloqueios das unidades fazendo referencia para este registro! (FK_HIBLUN_USUARI_RESPONSAVEL)");
                return e;
            } else if (msg.indexOf("RULE_383795") >= 0) {
                e = new AdsException("PDV_488779.CUPONS_FISCAIS.RULE_383795.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Cupons fiscais fazendo referencia para este registro! (RULE_383795)");
                return e;
            } else if (msg.indexOf("RULE_383812") >= 0) {
                e = new AdsException("PDV_488779.ITENS_CUPONS_FISCAIS.RULE_383812.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Itens de cupons fiscais fazendo referencia para este registro! (RULE_383812)");
                return e;
            } else if (msg.indexOf("FK_TITO_USUARI_USUARIO_CANCELAMENTO") >= 0) {
                e = new AdsException("FINANC.TITULOS.FK_TITO_USUARI_USUARIO_CANCELAMENTO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Títulos financeiros fazendo referencia para este registro! (FK_TITO_USUARI_USUARIO_CANCELAMENTO)");
                return e;
            } else if (msg.indexOf("USUARIO_CANCELAMENTO") >= 0) {
                e = new AdsException("PDV.CUPONS_FISCAIS.USUARIO_CANCELAMENTO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Cupons fiscais fazendo referencia para este registro! (USUARIO_CANCELAMENTO)");
                return e;
            } else if (msg.indexOf("FK_ALTSKU_USUARIO") >= 0) {
                e = new AdsException("IDLOUP.ALTERACOES_SKUS.FK_ALTSKU_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Alterações de SKUs fazendo referencia para este registro! (FK_ALTSKU_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_AUTPED_USUARI_USUARIO_LIBERACAO") >= 0) {
                e = new AdsException("PEDIDOS.AUTORIZACOES_PEDIDOS.FK_AUTPED_USUARI_USUARIO_LIBERACAO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Autorizações de pedidos fazendo referencia para este registro! (FK_AUTPED_USUARI_USUARIO_LIBERACAO)");
                return e;
            } else if (msg.indexOf("FK_AUTPED_USUARI_USUARIO_QUE_UTILIZOU") >= 0) {
                e = new AdsException("PEDIDOS.AUTORIZACOES_PEDIDOS.FK_AUTPED_USUARI_USUARIO_QUE_UTILIZOU.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Autorizações de pedidos fazendo referencia para este registro! (FK_AUTPED_USUARI_USUARIO_QUE_UTILIZOU)");
                return e;
            } else if (msg.indexOf("FK_PEDI_USUARI_USUARIO_LIBERACAO_DESCONTO") >= 0) {
                e = new AdsException("PEDIDOS.PEDIDOS.FK_PEDI_USUARI_USUARIO_LIBERACAO_DESCONTO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Pedidos fazendo referencia para este registro! (FK_PEDI_USUARI_USUARIO_LIBERACAO_DESCONTO)");
                return e;
            } else if (msg.indexOf("FK_USUARIO_USUARI_USUARIO") >= 0) {
                e = new AdsException("SISGIA.USUARIOS_SISTEMA.FK_USUARIO_USUARI_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Usuários sistema fazendo referencia para este registro! (FK_USUARIO_USUARI_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_LOTETITU_USUARI_USUARIO") >= 0) {
                e = new AdsException("FINANC.LOTES_TITULOS.FK_LOTETITU_USUARI_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Lotes de títulos fazendo referencia para este registro! (FK_LOTETITU_USUARI_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_USRCOM_USUARIO_ASSOCIADO") >= 0) {
                e = new AdsException("AUTOBASE.USUARIO_COMPANHIA.FK_USRCOM_USUARIO_ASSOCIADO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Usuários das companhias fazendo referencia para este registro! (FK_USRCOM_USUARIO_ASSOCIADO)");
                return e;
            } else if (msg.indexOf("FK_HISTPROD_USUARI_USUARIO") >= 0) {
                e = new AdsException("PROD.HISTORICOS_PRODUTOS.FK_HISTPROD_USUARI_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Históricos dos produtos fazendo referencia para este registro! (FK_HISTPROD_USUARI_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_EMAILS_USUARI_USUARIO_QUE_ESTA_ENVIADO_MAIL") >= 0) {
                e = new AdsException("EMAIL.EMAILS.FK_EMAILS_USUARI_USUARIO_QUE_ESTA_ENVIADO_MAIL.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem EMAILS fazendo referencia para este registro! (FK_EMAILS_USUARI_USUARIO_QUE_ESTA_ENVIADO_MAIL)");
                return e;
            } else if (msg.indexOf("FK_ITRNSKU_USUARI_USUARIO") >= 0) {
                e = new AdsException("IDLOUP.CODIGOS_RENOMEAR_SKUS.FK_ITRNSKU_USUARI_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Códigos para renomear SKUs fazendo referencia para este registro! (FK_ITRNSKU_USUARI_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_MOVITACE_USUARI_USUARIO") >= 0) {
                e = new AdsException("ACERVO_ELIGO.MOVIMENTOS_ITENS_ACERVO.FK_MOVITACE_USUARI_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Movimentos dos itens do acervo fazendo referencia para este registro! (FK_MOVITACE_USUARI_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_MOVPROCO_USUARIO") >= 0) {
                e = new AdsException("COTISTAS.MOVIMENTOS_PRODUTOS_COTISTAS.FK_MOVPROCO_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Movimentos produtos cotistas fazendo referencia para este registro! (FK_MOVPROCO_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_JOBS_USUARIO") >= 0) {
                e = new AdsException("SCHEDU.JOBS.FK_JOBS_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Agenda de tarefas fazendo referencia para este registro! (FK_JOBS_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_PDVCF_USUARIO_CANCELAMENTO") >= 0) {
                e = new AdsException("PDV2.CUPONS_FISCAIS.FK_PDVCF_USUARIO_CANCELAMENTO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Cupons fiscais fazendo referencia para este registro! (FK_PDVCF_USUARIO_CANCELAMENTO)");
                return e;
            } else if (msg.indexOf("FK_ORDSERV_USUARI_ATENDENTE") >= 0) {
                e = new AdsException("ORDSER04.ORDENS_SERVICO.FK_ORDSERV_USUARI_ATENDENTE.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Ordens de serviço fazendo referencia para este registro! (FK_ORDSERV_USUARI_ATENDENTE)");
                return e;
            } else if (msg.indexOf("FK_ORDSERV_USUARI_RESPONSAVEL_CANCELAMENTO") >= 0) {
                e = new AdsException("ORDSER04.ORDENS_SERVICO.FK_ORDSERV_USUARI_RESPONSAVEL_CANCELAMENTO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Ordens de serviço fazendo referencia para este registro! (FK_ORDSERV_USUARI_RESPONSAVEL_CANCELAMENTO)");
                return e;
            } else if (msg.indexOf("FK_LOGREG_USUARIO") >= 0) {
                e = new AdsException("JOURNAL.LOG_REGISTROS.FK_LOGREG_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Log de Registros fazendo referencia para este registro! (FK_LOGREG_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_COMP_USUARIO_MODIFICACAO_ESTRUTURA") >= 0) {
                e = new AdsException("ADS_COMPS.COMPONENTES.FK_COMP_USUARIO_MODIFICACAO_ESTRUTURA.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Componentes fazendo referencia para este registro! (FK_COMP_USUARIO_MODIFICACAO_ESTRUTURA)");
                return e;
            } else if (msg.indexOf("FK_REHOSA_USUARIO") >= 0) {
                e = new AdsException("FRIGAPP.RESERVAS_SALAS.FK_REHOSA_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Reservas de salas fazendo referencia para este registro! (FK_REHOSA_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_LOG_PECATA_O_USUARIO") >= 0) {
                e = new AdsException("AUTOBASE.LOG_PEDIDO_CARREGAMENTO.FK_LOG_PECATA_O_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Logs dos pedidos de carregamento fazendo referencia para este registro! (FK_LOG_PECATA_O_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_VEND_USUARI_USUARIO") >= 0) {
                e = new AdsException("APPREF.VENDEDORES.FK_VEND_USUARI_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Vendedores fazendo referencia para este registro! (FK_VEND_USUARI_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_GRUFES_USUARIO") >= 0) {
                e = new AdsException("FESTIVAL_DANCA.GRUPOS_FESTIVAL.FK_GRUFES_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Grupos do festival fazendo referencia para este registro! (FK_GRUFES_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_MPNOTA_USUARIO_ALTERACAO") >= 0) {
                e = new AdsException("AUTOBASE.MEDICAO_PRODUTO_TANQUE.FK_MPNOTA_USUARIO_ALTERACAO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Medições dos produtos nos tanques fazendo referencia para este registro! (FK_MPNOTA_USUARIO_ALTERACAO)");
                return e;
            } else if (msg.indexOf("FK_CADCAR_USUARIO_SUPERVISOR") >= 0) {
                e = new AdsException("AUTOBASIWEB.CARTAO.FK_CADCAR_USUARIO_SUPERVISOR.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Cartões fazendo referencia para este registro! (FK_CADCAR_USUARIO_SUPERVISOR)");
                return e;
            } else if (msg.indexOf("FK_PECATA_USUARIO") >= 0) {
                e = new AdsException("AUTOBASIWEB.PEDIDO_CT.FK_PECATA_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Pedidos para caminhãos tanques fazendo referencia para este registro! (FK_PECATA_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_PRLICO_USUARIO_REGISTRO") >= 0) {
                e = new AdsException("FRIGAPP.PRODUTOS_LISTAS_CONTAGENS.FK_PRLICO_USUARIO_REGISTRO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Produtos da listas de inventários fazendo referencia para este registro! (FK_PRLICO_USUARIO_REGISTRO)");
                return e;
            } else if (msg.indexOf("FK_RTARE_USUARIO_ASSOCIADO") >= 0) {
                e = new AdsException("FRIGAPP.RAMAIS_TELEFONICOS_AREAS.FK_RTARE_USUARIO_ASSOCIADO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Ramais telefônicos (áreas de negócios) fazendo referencia para este registro! (FK_RTARE_USUARIO_ASSOCIADO)");
                return e;
            } else if (msg.indexOf("FK_ITEMAL_USUARI_USUARIO_ENVIO") >= 0) {
                e = new AdsException("FRIGAPP.ITENS_MALOTES.FK_ITEMAL_USUARI_USUARIO_ENVIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Itens dos malotes fazendo referencia para este registro! (FK_ITEMAL_USUARI_USUARIO_ENVIO)");
                return e;
            } else if (msg.indexOf("FK_ITEMAL_USUARI_USUARIO_RECEBE") >= 0) {
                e = new AdsException("FRIGAPP.ITENS_MALOTES.FK_ITEMAL_USUARI_USUARIO_RECEBE.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Itens dos malotes fazendo referencia para este registro! (FK_ITEMAL_USUARI_USUARIO_RECEBE)");
                return e;
            } else if (msg.indexOf("FK_PESSOA_USUARI_USUARIO") >= 0) {
                e = new AdsException("FRIGAPP.PESSOAS.FK_PESSOA_USUARI_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Pessoas fazendo referencia para este registro! (FK_PESSOA_USUARI_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_AVLCDEP_USUARI_USUARIO") >= 0) {
                e = new AdsException("FRIGAPP.AVISOS_LANCAMENTOS_DEPOSITOS.FK_AVLCDEP_USUARI_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Avisos de lancamentos de depósitos fazendo referencia para este registro! (FK_AVLCDEP_USUARI_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_INSTBCO_USUARI_USUARIO_INSTRUCAO") >= 0) {
                e = new AdsException("FRIGAPP.INSTRUCOES_BANCARIAS.FK_INSTBCO_USUARI_USUARIO_INSTRUCAO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Instruções bancárias fazendo referencia para este registro! (FK_INSTBCO_USUARI_USUARIO_INSTRUCAO)");
                return e;
            } else if (msg.indexOf("FK_SESS_USUA") >= 0) {
                e = new AdsException("ADSRT_OLD.SESSOES.FK_SESS_USUA.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Sessões fazendo referencia para este registro! (FK_SESS_USUA)");
                return e;
            } else if (msg.indexOf("FK_TEIT_USUA_USUARIO") >= 0) {
                e = new AdsException("FRIGAPP.TEXTOS_INTRANET.FK_TEIT_USUA_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Textos para intranet fazendo referencia para este registro! (FK_TEIT_USUA_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_MALOTE_USARNG") >= 0) {
                e = new AdsException("FRIGAPP.MALOTES.FK_MALOTE_USARNG.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Malotes fazendo referencia para este registro! (FK_MALOTE_USARNG)");
                return e;
            } else if (msg.indexOf("FK_USUARI_USUARI_USUARIO_INCLUSAO") >= 0) {
                e = new AdsException("RTAUTH_PESS.USUARIOS.FK_USUARI_USUARI_USUARIO_INCLUSAO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Usuários fazendo referencia para este registro! (FK_USUARI_USUARI_USUARIO_INCLUSAO)");
                return e;
            } else if (msg.indexOf("FK_LIFOCO_USUARIO_ALTERACAO") >= 0) {
                e = new AdsException("AUTOBASIWEB.MEDICAO_PRODUTO_LINHA.FK_LIFOCO_USUARIO_ALTERACAO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Medição do produtos nas Linhas fazendo referencia para este registro! (FK_LIFOCO_USUARIO_ALTERACAO)");
                return e;
            } else if (msg.indexOf("FK_MPNOTA_USUARIO_ALTERACAO") >= 0) {
                e = new AdsException("AUTOBASIWEB.MEDICAO_PRODUTO_TANQUE.FK_MPNOTA_USUARIO_ALTERACAO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Medições dos produtos nos tanques fazendo referencia para este registro! (FK_MPNOTA_USUARIO_ALTERACAO)");
                return e;
            } else if (msg.indexOf("FK_DACOFU_USUARIO_ULTIMA_ALTERACAO") >= 0) {
                e = new AdsException("FRIGAPP.DADOS_CONTATOS_FUNCIONARIOS.FK_DACOFU_USUARIO_ULTIMA_ALTERACAO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Dados para contatos de funcionários fazendo referencia para este registro! (FK_DACOFU_USUARIO_ULTIMA_ALTERACAO)");
                return e;
            } else if (msg.indexOf("FK_ENCDIA_USUARIO") >= 0) {
                e = new AdsException("AUTOBASIWEB.ENCERRAMENTO_DIA.FK_ENCDIA_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Encerramentos dos dias fazendo referencia para este registro! (FK_ENCDIA_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_REGSUG_USUARIO_PARECER") >= 0) {
                e = new AdsException("AUTOBASE.REGISTRO_SUGESTOES.FK_REGSUG_USUARIO_PARECER.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Registros de sugestões fazendo referencia para este registro! (FK_REGSUG_USUARIO_PARECER)");
                return e;
            } else if (msg.indexOf("FK_REHOSA_USUARIO_RESERVA") >= 0) {
                e = new AdsException("FRIGAPP.RESERVAS_SALAS.FK_REHOSA_USUARIO_RESERVA.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Reservas de salas fazendo referencia para este registro! (FK_REHOSA_USUARIO_RESERVA)");
                return e;
            } else if (msg.indexOf("FK_SOCOPR_USUARIO_COMPRADOR") >= 0) {
                e = new AdsException("FRIGAPP.SOLICITACOES_COTACOES_PRODUTOS.FK_SOCOPR_USUARIO_COMPRADOR.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Solicitações de cotações de produtos fazendo referencia para este registro! (FK_SOCOPR_USUARIO_COMPRADOR)");
                return e;
            } else if (msg.indexOf("FK_CONPRO_USUARIO") >= 0) {
                e = new AdsException("INVENTARIO.CONTAGENS_PRODUTOS.FK_CONPRO_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Processos de contagens de produtos fazendo referencia para este registro! (FK_CONPRO_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_ITEMCF_USUARIO_CANCELAMENTO") >= 0) {
                e = new AdsException("PDV2.ITENS_CUPONS_FISCAIS.FK_ITEMCF_USUARIO_CANCELAMENTO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Itens de cupons fiscais fazendo referencia para este registro! (FK_ITEMCF_USUARIO_CANCELAMENTO)");
                return e;
            } else if (msg.indexOf("FK_PROCON_USUARIO") >= 0) {
                e = new AdsException("INVENTARIO.PRODUTOS_CONTADOS.FK_PROCON_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Produtos contados fazendo referencia para este registro! (FK_PROCON_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_EMCOEN_USUARIO_ENVIO") >= 0) {
                e = new AdsException("FRIGAPP.EMAILS_ENVIADOS_COTACOES.FK_EMCOEN_USUARIO_ENVIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Emails enviados (soclitações/cotações) fazendo referencia para este registro! (FK_EMCOEN_USUARIO_ENVIO)");
                return e;
            } else if (msg.indexOf("FK_CHTPER_USUARIO") >= 0) {
                e = new AdsException("CHAT.PESSOAS_SESSOES_CHAT.FK_CHTPER_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Pessoas das sessões de chat fazendo referencia para este registro! (FK_CHTPER_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_LIFOCO_USUARIO_ALTERACAO") >= 0) {
                e = new AdsException("AUTOBASE.MEDICAO_PRODUTO_LINHA.FK_LIFOCO_USUARIO_ALTERACAO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Medição do produtos nas Linhas fazendo referencia para este registro! (FK_LIFOCO_USUARIO_ALTERACAO)");
                return e;
            } else if (msg.indexOf("FK_CADCAR_USUARIO_SUPERVISOR") >= 0) {
                e = new AdsException("AUTOBASE.CARTAO.FK_CADCAR_USUARIO_SUPERVISOR.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Cartões fazendo referencia para este registro! (FK_CADCAR_USUARIO_SUPERVISOR)");
                return e;
            } else if (msg.indexOf("FK_REGSUG_USUARIO_REGISTRO") >= 0) {
                e = new AdsException("AUTOBASIWEB.REGISTRO_SUGESTOES.FK_REGSUG_USUARIO_REGISTRO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Registros de sugestões fazendo referencia para este registro! (FK_REGSUG_USUARIO_REGISTRO)");
                return e;
            } else if (msg.indexOf("FK_REGSUG_USUARIO_PARECER") >= 0) {
                e = new AdsException("AUTOBASIWEB.REGISTRO_SUGESTOES.FK_REGSUG_USUARIO_PARECER.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Registros de sugestões fazendo referencia para este registro! (FK_REGSUG_USUARIO_PARECER)");
                return e;
            } else if (msg.indexOf("FK_PECATA_SUPERVISOR") >= 0) {
                e = new AdsException("AUTOBASIWEB.PEDIDO_CT.FK_PECATA_SUPERVISOR.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Pedidos para caminhãos tanques fazendo referencia para este registro! (FK_PECATA_SUPERVISOR)");
                return e;
            } else if (msg.indexOf("FK_SOCOPR_USUARIO_AUTORIZACAO") >= 0) {
                e = new AdsException("FRIGAPP.SOLICITACOES_COTACOES_PRODUTOS.FK_SOCOPR_USUARIO_AUTORIZACAO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Solicitações de cotações de produtos fazendo referencia para este registro! (FK_SOCOPR_USUARIO_AUTORIZACAO)");
                return e;
            } else if (msg.indexOf("FK_SOCOPR_USUARIO_NAO_AUTORIZOU") >= 0) {
                e = new AdsException("FRIGAPP.SOLICITACOES_COTACOES_PRODUTOS.FK_SOCOPR_USUARIO_NAO_AUTORIZOU.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Solicitações de cotações de produtos fazendo referencia para este registro! (FK_SOCOPR_USUARIO_NAO_AUTORIZOU)");
                return e;
            } else if (msg.indexOf("FK_PESSOA_USUARIO_ALTERACAO") >= 0) {
                e = new AdsException("FRIGAPP.PESSOAS.FK_PESSOA_USUARIO_ALTERACAO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Pessoas fazendo referencia para este registro! (FK_PESSOA_USUARIO_ALTERACAO)");
                return e;
            } else if (msg.indexOf("FK_ENCDIA_USUARIO") >= 0) {
                e = new AdsException("AUTOBASE.ENCERRAMENTO_DIA.FK_ENCDIA_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Encerramentos dos dias fazendo referencia para este registro! (FK_ENCDIA_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_LOG_PECATA_N_USUARIO") >= 0) {
                e = new AdsException("AUTOBASE.LOG_PEDIDO_CARREGAMENTO.FK_LOG_PECATA_N_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Logs dos pedidos de carregamento fazendo referencia para este registro! (FK_LOG_PECATA_N_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_LVLPSU_USUARIO_RESPONS") >= 0) {
                e = new AdsException("AUTOBASE.HISTORICO_VOLUME_LIBERADO.FK_LVLPSU_USUARIO_RESPONS.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Histórico de volumes liberados pelos supervisores fazendo referencia para este registro! (FK_LVLPSU_USUARIO_RESPONS)");
                return e;
            } else if (msg.indexOf("FK_CHQEMIT_USUARI_USUARIO_ALTERACAO") >= 0) {
                e = new AdsException("FRIGAPP.CHEQUES_EMITIDOS.FK_CHQEMIT_USUARI_USUARIO_ALTERACAO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Cheques emitidos fazendo referencia para este registro! (FK_CHQEMIT_USUARI_USUARIO_ALTERACAO)");
                return e;
            } else if (msg.indexOf("FK_PECATA_SUPERVISOR") >= 0) {
                e = new AdsException("AUTOBASE.PEDIDO_CARREGAMENTO.FK_PECATA_SUPERVISOR.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Pedidos para carregamentos fazendo referencia para este registro! (FK_PECATA_SUPERVISOR)");
                return e;
            } else if (msg.indexOf("FK_PEAPTR_USUARI_USUARIO_FECHAMENTO") >= 0) {
                e = new AdsException("APURACOES.PERIODOS_AP_TRIB.FK_PEAPTR_USUARI_USUARIO_FECHAMENTO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Períodos de apuração de tributos fazendo referencia para este registro! (FK_PEAPTR_USUARI_USUARIO_FECHAMENTO)");
                return e;
            } else if (msg.indexOf("FK_USRCOM_USUARIO_ASSOCIADO") >= 0) {
                e = new AdsException("AUTOBASIWEB.USUARIO_COMPANHIA.FK_USRCOM_USUARIO_ASSOCIADO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Usuários das companhias fazendo referencia para este registro! (FK_USRCOM_USUARIO_ASSOCIADO)");
                return e;
            } else if (msg.indexOf("FK_ATLZREP_USUARI_USUARIO_RESPONSAVEL") >= 0) {
                e = new AdsException("REVERSA_BD.ATUALIZACOES_REPOSITORIO.FK_ATLZREP_USUARI_USUARIO_RESPONSAVEL.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Atualizações do repositório fazendo referencia para este registro! (FK_ATLZREP_USUARI_USUARIO_RESPONSAVEL)");
                return e;
            } else if (msg.indexOf("FK_SISTMIG_USUARI_USUARIO_RESPONSAVEL") >= 0) {
                e = new AdsException("REVERSA_BD.SISTEMAS_MIGRACOES.FK_SISTMIG_USUARI_USUARIO_RESPONSAVEL.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Sistemas migrações fazendo referencia para este registro! (FK_SISTMIG_USUARI_USUARIO_RESPONSAVEL)");
                return e;
            } else if (msg.indexOf("FK_LVLPSU_USUARIO_RESPONS") >= 0) {
                e = new AdsException("AUTOBASIWEB.HISTORICO_VOLUME_LIBERADO.FK_LVLPSU_USUARIO_RESPONS.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Histórico de volumes liberados pelos supervisores fazendo referencia para este registro! (FK_LVLPSU_USUARIO_RESPONS)");
                return e;
            } else if (msg.indexOf("FK_HIRC_USUARI_USUARIO_QUE_FEZ_REGISTRO") >= 0) {
                e = new AdsException("FRIGELAR_DEPRECATED.HISTORICOS_REGISTROS_OCORRENCIAS.FK_HIRC_USUARI_USUARIO_QUE_FEZ_REGISTRO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Históricos dos reigstros de ocorrências fazendo referencia para este registro! (FK_HIRC_USUARI_USUARIO_QUE_FEZ_REGISTRO)");
                return e;
            } else if (msg.indexOf("FK_ROTPLJ_USUARI_EMITENTE") >= 0) {
                e = new AdsException("FRIGELAR_DEPRECATED.ROTINAS_PLANEJADAS.FK_ROTPLJ_USUARI_EMITENTE.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Rotinas planejadas fazendo referencia para este registro! (FK_ROTPLJ_USUARI_EMITENTE)");
                return e;
            } else if (msg.indexOf("FK_REGOCO_USUARI_EMITENTE") >= 0) {
                e = new AdsException("FRIGELAR_DEPRECATED.REGISTROS_OCORRENCIAS.FK_REGOCO_USUARI_EMITENTE.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Registros ocorrências fazendo referencia para este registro! (FK_REGOCO_USUARI_EMITENTE)");
                return e;
            } else if (msg.indexOf("FK_REOC_USUA_RESPONSAVEL") >= 0) {
                e = new AdsException("FRIGELAR_DEPRECATED.REGISTROS_OCORRENCIAS.FK_REOC_USUA_RESPONSAVEL.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Registros ocorrências fazendo referencia para este registro! (FK_REOC_USUA_RESPONSAVEL)");
                return e;
            } else if (msg.indexOf("RULE_528884") >= 0) {
                e = new AdsException("CRM_YAZIGI.CONTATOS.RULE_528884.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Contatos fazendo referencia para este registro! (RULE_528884)");
                return e;
            } else if (msg.indexOf("FK_ARCMGE_USUARI_USUARIO_QUE_GEROU") >= 0) {
                e = new AdsException("FRIGELAR_DEPRECATED.ARQUIVOS_COMISSOES_GERADOS.FK_ARCMGE_USUARI_USUARIO_QUE_GEROU.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Arquivos de comissões gerados fazendo referencia para este registro! (FK_ARCMGE_USUARI_USUARIO_QUE_GEROU)");
                return e;
            } else if (msg.indexOf("REGRA_FK_768070") >= 0) {
                e = new AdsException("REVERSA_BD.ARQUIVOS_MIGRACAO.REGRA_FK-768070.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Arquivos para migração fazendo referencia para este registro! (REGRA_FK_768070)");
                return e;
            } else if (msg.indexOf("FK_USARNG_USUARI_USUARIO") >= 0) {
                e = new AdsException("FRIGELAR_DEPRECATED.USUARIOS_AREAS_NEGOCIOS.FK_USARNG_USUARI_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Usuários das áreas de negócios fazendo referencia para este registro! (FK_USARNG_USUARI_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_COMP_USUARIO_MODIFICACAO") >= 0) {
                e = new AdsException("ADS_COMPS.COMPONENTES.FK_COMP_USUARIO_MODIFICACAO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Componentes fazendo referencia para este registro! (FK_COMP_USUARIO_MODIFICACAO)");
                return e;
            } else if (msg.indexOf("FK_COMP_USUARIO_INCLUSAO") >= 0) {
                e = new AdsException("ADS_COMPS.COMPONENTES.FK_COMP_USUARIO_INCLUSAO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Componentes fazendo referencia para este registro! (FK_COMP_USUARIO_INCLUSAO)");
                return e;
            } else if (msg.indexOf("FK_PPCONC_USUARIO_INCLUSAO") >= 0) {
                e = new AdsException("FRIGAPP.PRECOS_PRODUTOS_CONCORRENCIA.FK_PPCONC_USUARIO_INCLUSAO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Preços dos produtos na concorrência fazendo referencia para este registro! (FK_PPCONC_USUARIO_INCLUSAO)");
                return e;
            } else if (msg.indexOf("FK_VFIACS_USUARIO") >= 0) {
                e = new AdsException("FRIGAPP.V_FILIAIS_ACESSOS_USUARIOS.FK_VFIACS_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Filiais de acessos do usuário fazendo referencia para este registro! (FK_VFIACS_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_HISALT_USUARIO") >= 0) {
                e = new AdsException("FESTIVAL_DANCA.HISTORICOS_ALTERACOES.FK_HISALT_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Históricos de alterações do grupo fazendo referencia para este registro! (FK_HISALT_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_HISATV_USUARIO") >= 0) {
                e = new AdsException("FSPROJETOS.HISTORICO_ATIVIDADE.FK_HISATV_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Históricos das Atividades fazendo referencia para este registro! (FK_HISATV_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_MOUNPR_USUARIO_RESPONSAVEL") >= 0) {
                e = new AdsException("FSAPVENDAS.MOVIMENTACAO_UNIDADE_PRODUTO.FK_MOUNPR_USUARIO_RESPONSAVEL.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Movimentações da unidades do produtos fazendo referencia para este registro! (FK_MOUNPR_USUARIO_RESPONSAVEL)");
                return e;
            } else if (msg.indexOf("FK_PESS_USUARIO_ASSOCIADO") >= 0) {
                e = new AdsException("ZTEST.PESSOA.FK_PESS_USUARIO_ASSOCIADO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Pessoas fazendo referencia para este registro! (FK_PESS_USUARIO_ASSOCIADO)");
                return e;
            } else if (msg.indexOf("FK_COLEC_USUARIO") >= 0) {
                e = new AdsException("COLECA.COLECOES.FK_COLEC_USUARIO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Coleções fazendo referencia para este registro! (FK_COLEC_USUARIO)");
                return e;
            } else if (msg.indexOf("FK_PDVCF_OPERADOR") >= 0) {
                e = new AdsException("PDV2.CUPONS_FISCAIS.FK_PDVCF_OPERADOR.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Cupons fiscais fazendo referencia para este registro! (FK_PDVCF_OPERADOR)");
                return e;
            } else if (msg.indexOf("FK_VAVAEN_RESPONSAVEL_AJUSTE") >= 0) {
                e = new AdsException("ZTEST.VALOR_VARIAVEL_ENSAIO.FK_VAVAEN_RESPONSAVEL_AJUSTE.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Valores das variávéis nos ensaios fazendo referencia para este registro! (FK_VAVAEN_RESPONSAVEL_AJUSTE)");
                return e;
            } else if (msg.indexOf("FK_RECPRO_USUARIO_REPRESENTADO") >= 0) {
                e = new AdsException("FSPROJETOS.RECURSO_PROJETO.FK_RECPRO_USUARIO_REPRESENTADO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Recursos do projeto fazendo referencia para este registro! (FK_RECPRO_USUARIO_REPRESENTADO)");
                return e;
            } else {
                e = new AdsException("RTAUTH.USUARIOS.GET_ERRORS_UNKNOWN",
                        AdsException.UNKNOWN,
                        "Erro não esperado: " + errorMsg);
            }
        } else {
            if (msg.indexOf("UK_USUARI_LOGIN") >= 0) {
                e = new AdsException("RTAUTH.USUARIOS.UK_USUARI_LOGIN", 
                        Severity.ERROR,
                        "Registro duplicado! Login é uma chave única Login ${LOGIN} (UK_USUARI_LOGIN)");
                return e;
            } else if (msg.indexOf("PK_USUARI") >= 0) {
                e = new AdsException("RTAUTH.USUARIOS.PK_USUARI", 
                        Severity.ERROR,
                        "ID duplicado! (PK_USUARI)");
                return e;
            } else {
                e = new AdsException("RTAUTH.USUARIOS.GET_ERRORS_UNKNOWN",
                        AdsException.UNKNOWN,
                        "Erro não esperado: " + errorMsg);
            }
        }
        return e;
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="Entity Information">
    
    public String getEntityName() {
        return ENTITY_NAME;
    }
    
    public String getTableName() {
        return TABLE_NAME;
    }
    
    public String idSequenceName() {
        return "PK_SEQUENCE";
    }
    
    private ArrayList<Field> allAttributes;
    public ArrayList<Field> getAllAttributes() {
        if (allAttributes == null) {
            allAttributes = new ArrayList<Field>();
            allAttributes.add(aId);
            allAttributes.add(aLogin);
            allAttributes.add(aSenha);
            allAttributes.add(aSenhaHash);
            allAttributes.add(aSuperUsuario);
            allAttributes.add(aAtivo);
            allAttributes.add(aPessoaId);
            allAttributes.add(aNomeCompleto);
            allAttributes.add(aEMail);
            allAttributes.add(aMenuId);
            allAttributes.add(aValidade);
        }
        return allAttributes;
    }
    
    /**
     * Retorna o valor da primeira UK da entidade
     * Se ela for composta, retorna a concatenação de toda a combinação
     * de atributos separados por um espaço.
     */
    public String valueOfUk() {
        return getLogin().toString();
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="Relationships">
    
    
    public void findByLogin(String login) throws AdsException {
        findBy(new String[] {"LOGIN"},
                new Object[] {login});
    }
    /**
     * Retorna os registros de PREFERENCIAS_USUARIOS que referenciam este registro através do atributo USUARIO_ID
     */
    public EntPreferenciasUsuarios findAllPreferenciasUsuariosUsuario() throws AdsException {
        return findAllPreferenciasUsuariosUsuario("order by ID");
    }
    
    /**
     * Retorna os registros de PREFERENCIAS_USUARIOS que referenciam este registro através do atributo USUARIO_ID
     */
    public EntPreferenciasUsuarios findAllPreferenciasUsuariosUsuario(String sqlAppend) throws AdsException {
        EntPreferenciasUsuarios out = new EntPreferenciasUsuarios(ctx);
        out.find("select ID from PREFERENCIAS_USUARIOS where USUARIO_ID = " + valueOfId() + " " + sqlAppend);
        return out;
    }
    
    /**
     * Retorna os registros de BILHETES_ENTRADA que referenciam este registro através do atributo USUARIO_ID
     */
    public EntBilhetesEntrada findAllBilhetesEntradaUsuario() throws AdsException {
        return findAllBilhetesEntradaUsuario("order by ID");
    }
    
    /**
     * Retorna os registros de BILHETES_ENTRADA que referenciam este registro através do atributo USUARIO_ID
     */
    public EntBilhetesEntrada findAllBilhetesEntradaUsuario(String sqlAppend) throws AdsException {
        EntBilhetesEntrada out = new EntBilhetesEntrada(ctx);
        out.find("select ID from BILHETES_ENTRADA where USUARIO_ID = " + valueOfId() + " " + sqlAppend);
        return out;
    }
    
    /**
     * Retorna os registros de FUNCOES_USUARIOS que referenciam este registro através do atributo USUARIO_ID
     */
    public EntFuncoesUsuarios findAllFuncoesUsuariosUsuario() throws AdsException {
        return findAllFuncoesUsuariosUsuario("order by ID");
    }
    
    /**
     * Retorna os registros de FUNCOES_USUARIOS que referenciam este registro através do atributo USUARIO_ID
     */
    public EntFuncoesUsuarios findAllFuncoesUsuariosUsuario(String sqlAppend) throws AdsException {
        EntFuncoesUsuarios out = new EntFuncoesUsuarios(ctx);
        out.find("select ID from FUNCOES_USUARIOS where USUARIO_ID = " + valueOfId() + " " + sqlAppend);
        return out;
    }
    
    /**
     * Retorna os registros de CHAVES_ATIVACAO que referenciam este registro através do atributo USUARIO_ID
     */
    public EntChavesAtivacao findAllChavesAtivacaoUsuario() throws AdsException {
        return findAllChavesAtivacaoUsuario("order by ID");
    }
    
    /**
     * Retorna os registros de CHAVES_ATIVACAO que referenciam este registro através do atributo USUARIO_ID
     */
    public EntChavesAtivacao findAllChavesAtivacaoUsuario(String sqlAppend) throws AdsException {
        EntChavesAtivacao out = new EntChavesAtivacao(ctx);
        out.find("select ID from CHAVES_ATIVACAO where USUARIO_ID = " + valueOfId() + " " + sqlAppend);
        return out;
    }
    
    /**
     * Retorna os registros de PESSOA que referenciam este registro através do atributo USUARIO_ASSOCIADO_ID
     */
    public EntPessoa findAllPessoaUsuarioAssociado() throws AdsException {
        return findAllPessoaUsuarioAssociado("order by ID");
    }
    
    /**
     * Retorna os registros de PESSOA que referenciam este registro através do atributo USUARIO_ASSOCIADO_ID
     */
    public EntPessoa findAllPessoaUsuarioAssociado(String sqlAppend) throws AdsException {
        EntPessoa out = new EntPessoa(ctx);
        out.find("select ID from PESSOA where USUARIO_ASSOCIADO_ID = " + valueOfId() + " " + sqlAppend);
        return out;
    }
    
    /**
     * Retorna os registros de VALOR_VARIAVEL_ENSAIO que referenciam este registro através do atributo RESPONSAVEL_AJUSTE_ID
     */
    public EntValorVariavelEnsaio findAllValorVariavelEnsaioResponsavelAjuste() throws AdsException {
        return findAllValorVariavelEnsaioResponsavelAjuste("order by ID");
    }
    
    /**
     * Retorna os registros de VALOR_VARIAVEL_ENSAIO que referenciam este registro através do atributo RESPONSAVEL_AJUSTE_ID
     */
    public EntValorVariavelEnsaio findAllValorVariavelEnsaioResponsavelAjuste(String sqlAppend) throws AdsException {
        EntValorVariavelEnsaio out = new EntValorVariavelEnsaio(ctx);
        out.find("select ID from VALOR_VARIAVEL_ENSAIO where RESPONSAVEL_AJUSTE_ID = " + valueOfId() + " " + sqlAppend);
        return out;
    }
    
    
    /**
     * Método que copia os valores dos atributos
     * para os valores respectivos old 
     */
    public void saveOldAtributes() {
        oNomeCompleto.setValue(aNomeCompleto);
        oEMail.setValue(aEMail);
        oId.setValue(aId);
        oMenuId.setValue(aMenuId);
        oAtivo.setValue(aAtivo);
        oPessoaId.setValue(aPessoaId);
        oSuperUsuario.setValue(aSuperUsuario);
        oValidade.setValue(aValidade);
        oSenha.setValue(aSenha);
        oLogin.setValue(aLogin);
        oSenhaHash.setValue(aSenhaHash);
    }
    
    /**
     * Método que retorna as regras da entidade
     * @return ArrayList com as regras ou null caso não existir nenhuma regra
     */
    public ArrayList getAllRules() {
        ArrayList<EntityRule> out = new ArrayList<EntityRule>();
        {
            UniqueKeyRule rule = new UniqueKeyRule();
            rule.setEntity(EntUsuarios.class);
            rule.setName("UK_USUARI_LOGIN");
            rule.addAttribute(new DomLogin("LOGIN",""));
            out.add(rule);
        }
        {
            PrimaryKeyRule rule = new PrimaryKeyRule();
            rule.setEntity(EntUsuarios.class);
            rule.setName("PK_USUARI");
            rule.setPkAttribute(new DomId("ID",""));
            out.add(rule);
        }
        return out;
    }
    // </editor-fold>
    
    @Override
    protected void preInsert() throws AdsException {
        // Validar a senha
        {
            ctx.logStart("ENT-EVE", "RTAUTH.USUARIOS", "Validar a senha");
            validarSenha();
            ctx.logFinish();
        }
        // Atualizar a data de valiadde da senha
        {
            ctx.logStart("ENT-EVE", "RTAUTH.USUARIOS", "Atualizar a data de valiadde da senha");
            atualizarValidade();
            ctx.logFinish();
        }
        // Integrar com pessoas
        {
            ctx.logStart("ENT-EVE", "RTAUTH.USUARIOS", "Integrar com pessoas");
            integrarPessoas();
            ctx.logFinish();
        }
    }
    
    @Override
    protected void posInsert() throws AdsException {
        registrarChaveValidacao(); //Registrar a chave de validação
    }
    
    @Override
    protected void preUpdate() throws AdsException {
        // Validar a senha
        {
            ctx.logStart("ENT-EVE", "RTAUTH.USUARIOS", "Validar a senha");
            validarSenha();
            ctx.logFinish();
        }
        // Atualizar a data de valiadde da senha
        {
            ctx.logStart("ENT-EVE", "RTAUTH.USUARIOS", "Atualizar a data de valiadde da senha");
            atualizarValidade();
            ctx.logFinish();
        }
    }
    
    @Override
    public void fillDefaultValues() throws AdsException {
        if (aId.isNull()) {
            aId.setValue("" + ctx.getNextVal("pk_sequence"));
        }
        if (getAtivo().isNull()) {
            setAtivo(getAtivo().getDefaultValue());
        }
        if (getSuperUsuario().isNull()) {
            setSuperUsuario(getSuperUsuario().getDefaultValue());
        }
    }
    
    // <editor-fold defaultstate="collapsed" desc="Métodos customizados">
    
    /**
     * Atualizar a data de valiadde da senha.
     * <p>
     * Ao alterar a senha, uma nova data de validade deve ser registrada. O 
     * calculo é baseado no parametro "ADSRT.DIAS_VALIDADE_SENHA". Se for 
     * zero ou nulo, a data de validade será nula (não expira), caso 
     * contrário a data de validade será a data atual do sistema + o número 
     * de dias indicado.
     */
    private void atualizarValidade() throws AdsException {
        // <user-code id="753509" parentId="8710" hashcode="-2d42eea3" length="282">
        String pref = "RTAUTH."
                + (currentTransaction == INSERT_TRANSACTION ? "NEW_" : "")
                + "PASSWORD_EXPIRATION_DAYS";
        String days = ctx.getPreference(pref);
        if (!days.isEmpty()) {
            setValidade("[SYSDATE]");
            getValidade().addDays(Integer.parseInt(days));
        }
        
        // </user-code>
    }
    
    /**
     * Funções.
     * <p>
     * Retorna um campo com as funções do usuário.
     */
    public DomSelectionCheck funcoes() throws AdsException {
        // <user-code id="4703364" parentId="4703361" hashcode="-17d88ed" length="627">
        DomSelectionCheck aFuncoes = new DomSelectionCheck();
        aFuncoes.addSqlOptions("select fs.id" +
                " , fs.titulo" +
                " , null" +
                " from funcoes_sistemas fs" +
                " order by fs.titulo");
        
        if (getId() != null) {
            StringBuilder out = new StringBuilder();
            EntFuncoesSistemas fusi = new EntFuncoesSistemas(ads);
            fusi.find("select funcao_id from funcoes_usuarios where usuario_id=" + getId());
            while(fusi.next()) {
                if (out.length()>0) out.append(",");
                out.append(fusi.getId());
            }
            fusi.close();
            aFuncoes.setValue(out.toString());
        }
        return aFuncoes;
        
        // </user-code>
    }
    
    /**
     * Install.
     * <p>
     * Se não tiver nenhum usuário cadastrado, cria um usuário chamado 
     * "ADMINISTRADOR" com senha "ADMINISTRADOR". Este usuário deve ser 
     * removido ou sua senha deve ser alterada!
     * <P>
     */
    public void install() throws AdsException {
        // <user-code id="806967" parentId="142213" hashcode="-1f129516" length="304">
        // import br.com.telescope.auth.AdsrtUser;
        if (ctx.computeSqlInteger("select count(1) from usuarios", 0) == 0) {
            EntUsuarios adm = new EntUsuarios(ads);
            adm.setLogin("administrador");
            adm.setSenha("administrador");
            adm.setSuperUsuario("S");
            adm.setAtivo("S");
            adm.ins();
        }
        // </user-code>
    }
    
    /**
     * Integrar com pessoas.
     * <p>
     * Quando existir uma pessoa relacionada com o usuário, o ID do usuário 
     * deve ser o mesmo ID da pessoa. Esse procedimento tem dois objetivos:
     * <P>
     * 1 - Estabeler um relacionamento um para um com pessoas (fazendo que a 
     * mesma pessoa não possa ser dois usuários);
     * <P>
     * 2 - Permitir que demais entidades possam ter atributos automaticamente 
     * preenchidos com a pessoa que representa o usuário da sessão.
     * <P>
     */
    private void integrarPessoas() throws AdsException {
        // <user-code id="113029" parentId="113027" hashcode="3923200c" length="74">
        if (aPessoaId.isNotNull()) {
            aId.setValue(aPessoaId.getValue());
        }
        
        // </user-code>
    }
    
    /**
     * Validar a senha.
     * <p>
     * Verifica se a senha informada atende os requisitos mínimos 
     * definidos:<ul>
     * <P>
     * <li>Iniciar com A-Z;
     * <P>
     * <li>Ter pelo menos 3 caracteres;
     * <P>
     * <li>Ter pelo menos 2 dígitos;
     * <P>
     * <li>Ter pelo menos 1 sinal gráfico ("$","#","!", etc.);
     * <P>
     * <li>Ter pelo menos 7 caractéres;
     * <P>
     * <li>Não fazer parte das senhas que são facilmente descobertas *.
     * <P>
     * </ul>
     * <P>
     * É responsabilidade do usuário manter sua senha em sigilo.
     * <P>
     * <p>
     * <P>
     * * Senhas facilmente descobertas são:<ul>
     * <P>
     * <li>Iniciais do nome
     * <P>
     * <li>Data do aniversário (DDMM), (DDMMAA), (DDMMAAAA), etc.
     * <P>
     * <li>Qualquer combinação das opções acima;
     * <P>
     * </ul>
     * <P>
     */
    private void validarSenha() throws AdsException {
        // <user-code id="799546" parentId="8715" hashcode="5e0" length="2">
        //
        // </user-code>
    }
    
    /**
     * Regra de ação: Registrar a chave de validação
     * 
     * Registra a chave de validação para o usuário cadastrado.
     */
    private void registrarChaveValidacao() throws AdsException {
        // <user-code id="792789" parentId="792786" hashcode="-1a92996d" length="860">
        // import java.util.UUID;
        
        if (ctx.getPreference("RTAUTH.CRIA_CONTA_USUARIO_COM_ATIVACAO","N").equals("S")) {
            EntChavesAtivacao chave = new EntChavesAtivacao(ctx);
        
            chave.setChaveAtivacao(UUID.randomUUID().toString());
            chave.setUsuarioId(valueOfId());
        
            /**
              * // A interface/entidade que cria um usuário deve registrar o nome do serviço (origem) em uma variável de sessão
              * // TODO: como tratar isto????
              * String servico = (String) ctx.getSession().getObject("RTAUTH.SERVICO_CHAVE_ATIVACAO");
              * if (servico == null || servico.isEmpty()) {
              *     servico = ctx.getPreference("RTAUTH.SERVICO_DEFAULT_ATIVACAO","RTAUTH.ATIVA_CONTA");
              * }
              */
            String servico = ctx.getPreference("RTAUTH.SERVICO_DEFAULT_ATIVACAO","RTAUTH.ATIVA_CONTA");
            chave.setServico(servico);
            chave.ins();
        }
        
        // </user-code>
    }
}
